/*
 * Tarea para programación Unidad 06 1ºDAM
 * 
 */
package ficheroSerializado;

import java.io.Serializable;

/**
 * Clase que implementa serialización para la gestion de clientes
 * @author Jonatan S. Rodríguez Lantigua <jonatan.srl@gmail.com>
 * @version 0.1
 * @see java.io.Serializable
 */
public class Cliente implements Serializable {

    
    //atributos de la clase
    private String nif;
    private String nombre;
    private String telefono;
    private String direccion;
    private String deuda;

    
    /**
     *contructor sin parametros
     * 
     */
    public Cliente() {
    }
   
    
    //generado los getter y setter automaticamente.
    /**
     * @return the nif
     */
    public String getNif() {
        return nif;
    }

    /**
     * @param nif the nif to set
     * @throws Exception  
     */
    public void setNif(String nif) throws Exception {
       if (nif.length()< 8){
            throw new Exception ("Nif inválido,");
        }
        this.nif = anchoRegistro(nif);
    }

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set y establece un registro de ancho fijo.
     * @throws Exception  
     */
    public void setNombre(String nombre) throws Exception {
        if (nombre.length() <=0){
            throw new Exception("No hay datos en el nombre,");
        }
        this.nombre = anchoRegistro(nombre);
    }

    /**
     * @return the telefono 
     */
    public String getTelefono() {
        return telefono;
    }

    /**
     * @param telefono the telefono to set y establece un registro de ancho fijo.
     * @throws Exception  
     */
    public void setTelefono(String telefono) throws Exception {
        if ((telefono.length() < 9)||(telefono.length() > 9)){
            throw new Exception ("telefono inválido,");
        }
        this.telefono = anchoRegistro(telefono);
    }

    /**
     * @return the direccion
     */
    public String getDireccion() {
        return direccion;
    }

    /**
     * @param direccion the direccion to set y establece un registro de ancho fijo.
     * @throws Exception  
     */
    public void setDireccion(String direccion) throws Exception {
        if (direccion.length()<= 3){
            throw new Exception ("Dirección inválida,");
        }
        this.direccion = anchoRegistro(direccion);
    }

    /**
     * @return the deuda
     */
    public String getDeuda() {
        return deuda;
    }

    /**
     * @param deuda the deuda to set y establece un registro de ancho fijo.
     * @throws Exception  
     */
    public void setDeuda(String deuda) throws Exception {
         if (deuda.length() < 0){
            throw new Exception("No hay datos de deuda válidos,");
    }
    this.deuda = anchoRegistro(deuda);     
   }  
   /**
    * Metodo auxiliar de la clase para establecer un ancho fijo de registro para la consulta secuencial
    * de nombre y la direccion.
    * @param cadenaCorregida valor de ancho fijo.
    */         
   private String anchoRegistro(String cadena){
       String cadenaCorregida = cadena;
        int valorCadena = cadena.length();
       if (valorCadena < 25){
           int i;
           for (i=0; i<(25 - valorCadena);i++){
           cadenaCorregida = cadenaCorregida.concat(" ");
           }
       }else if (valorCadena > 25){
           cadenaCorregida = cadena.substring(0, 24);
       }  
        return cadenaCorregida;
       
   }

  
    
}
